package com.example.ymm.modules1.service.user;

import com.alibaba.fastjson.JSONObject;
import com.example.ymm.base.BaseService;
import com.example.ymm.model.TableList;
import com.example.ymm.model.YmPageDto;
import com.example.ymm.modules1.entity.my.user.DbCard;
import com.example.ymm.modules1.entity.my.user.DbUserNote;
import com.example.ymm.modules1.service.dto.*;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface DbUserNoteService extends BaseService<DbUserNote> {


    TableList<DbUserNote> list(DbUserNoteQueryCriteria criteria, YmPageDto ymPage);

    List<DbUserNote> queryAll(DbUserNoteQueryCriteria criteria);


    /**
     * 获取最新的读书记录
     * @param criteria
     * @return
     */
    DbUserNote getNewUserNote(DbUserNoteQueryCriteria criteria);

    List<String> getTimes(String time);

    BigDecimal getUserDurations(DbUserNoteQueryCriteria criteria);

//    Map<String, Object> addNote(DbUserNoteDto dto);

    Map<String, AddNoteResultDto> addNoteBatch(List<DbUserNoteDto> list);


    /**
     * 补卡
     * @param list
     * @return
     */
    Map<String, AddNoteResultDto> patchNoteBatch(List<DbUserNoteDto> list,String date);




    /**
     * 提前读书打卡
     * @param list
     * @return
     */
    Map<String, AddNoteResultDto> advanceNoteBatch(List<DbUserNoteDto> list,String date);


    /**
     * 我的书本笔记-根据书本id列出这本书的所有笔记
     * @param bookId
     * @return
     */
    List<JSONObject> getNotesByBookId(String bookId,String userId);



    /**
     * 导入用户读书笔记，用户 修复 故障造成的用户读书记录丢失
     * @return
     */

    List<String> importUserNote(List<ImportUserNoteDto> list);


    void deleteNote(String noteId);


    List<DbCard> testGetUserNote();


    /**
     * 同步录音文件
     */
    String syncUpUserNoteByOne(DbUserNote dbUserNote);


    /**
     * 书本阅读占比统计-饼图
     * @param criteria
     * @return
     */
    List<BookPieDto> bookPieCount(SysRankingQueryCriteria criteria);

    /**
     * 后台
     * @param criteria
     * @return
     */
    Map<String,Object> bookUserTimeCount(SysRankingQueryCriteria criteria);

    List<String> bookPieUserList(DbUserNoteQueryCriteria criteria);


    /**
     * 电脑排行榜
     * @param criteria
     * @return
     */
    TableList<SysRankingListDto> sysRankingList(SysRankingQueryCriteria criteria,YmPageDto pageDto);
}
